from pyspark.context import SparkContext

# 创建spark执行环境
sc = SparkContext()

# 读取数据
scores_rdd = sc.textFile("../../data/score.txt")

students_rdd = sc.textFile("../../data/students.txt")

# 1、统计学生的总分
sum_score_rdd = scores_rdd \
    .map(lambda line: (line.split(",")[0], int(line.split(",")[-1]))) \
    .reduceByKey(lambda a, b: a + b)

# 2、统计每个班级总分的平均分
# 1、读取学号和班级
# 2、管理总分表
# 3、整理数据
# 4、统计班级总总分和人数
# 5、计算平均分
students_rdd \
    .map(lambda line: (line.split(",")[0], line.split(",")[-1])) \
    .join(sum_score_rdd) \
    .map(lambda kv: (kv[1][0], (kv[1][1], 1))) \
    .reduceByKey(lambda x, y: (x[0] + y[0], x[1] + y[1])) \
    .mapValues(lambda kv: round(kv[0] / kv[1], 2)) \
    .foreach(print)
